//Promise:
//解决回调地狱：
//异步的一种管理机制；
//语法：
//扩展：

//1.回调地狱：
//需求：ABC
// let xhr = new XMLHttpRequest();
// xhr.open("get", "url");
// xhr.send()
// xhr.onreadystatechange = function () {
//     if (xhr.readyState == 4) {
//         if (xhr.status == 200) {
//             //数据存在
//             xhr.responseText;
//         }
//     }
// }

function CreateAJax(url, callback) {
    let xhr = new XMLHttpRequest();
    xhr.open("get", url);
    xhr.send()
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                //数据存在
                callback(xhr.responseText);
                //dom
            }
        }
    }
}
// function cb(data){
//     console.log(data);
// }
// CreateAJax("http:/sssls.com/apio/getuser",(data)=>{
//     console.log(data);
// });
// CreateAJax("http:/sssls.com/apio/getuser",cb);
CreateAJax("urlA", (dataA) => {
    CreateAJax("urlB", (dataB) => {
        CreateAJax("urlC", (dataC) => {

        })
    })
})


let xhr = new XMLHttpRequest();
xhr.open("get", url);
xhr.send()
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            //数据存在
            // callback(xhr.responseText);
            let xhr = new XMLHttpRequest();
            xhr.open("get", url);
            xhr.send()
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        //数据存在
                        // callback(xhr.responseText);
                        let xhr = new XMLHttpRequest();
                        xhr.open("get", url);
                        xhr.send()
                        xhr.onreadystatechange = function () {
                            if (xhr.readyState == 4) {
                                if (xhr.status == 200) {
                                    //数据存在
                                    callback(xhr.responseText);
                                    //dom
                                }
                            }
                        }
                        //dom
                    }
                }
            }
            //dom
        }
    }
}


let p = new Promise((resolve, reject) => {
    //异步的管理？
    let xhr = new XMLHttpRequest();
    xhr.open("get", "url");
    xhr.send()
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                //数据存在
                resolve(xhr.responseText);
            } else {
                reject(xhr.status)
            }
        }
    }
})

//你希望：ajax获取到数据之后，我们让prominse的状态变成 成功。  执行then（）
//失败执行catch
p.then((data) => {
    console.log(data);
}).catch(err => {
    console.log(err);
})
try {

} catch (error) {

}

Promise.all([p1,p2,p3]).then()
console.log(123);
Promise.resolve().then(()=>{
    console.log(123);
})

//回调地狱==》链式
{
    function CreatePromise(url) {
        let p = new Promise((resolve, reject) => {
            //异步的管理？
            let xhr = new XMLHttpRequest();
            xhr.open("get", url);
            xhr.send()
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    if (xhr.status == 200) {
                        //数据存在
                        resolve(xhr.responseText);
                    } else {
                        reject(xhr.status)
                    }
                }
            }
        })
        return p;
    }

    //链式
    CreatePromise("http:A").then((dataA)=>{
        return CreatePromise("http:B")
    }).then((dataB)=>{
        return CreatePromise("http:C")
    }).then(dataC=>{
        return CreatePromise("http:D")
    }).then(dataD=>{

    })

}{

}





